/**
 *  @description 使用 svg-captcha 生成 图形校验码
 * @author liu
 */

const svgCaptcha = require('svg-captcha')
// 引入redis方法
const redis = require('../redis/redis')
// 创建一个token
const { createToken } = require('./usersUtils')
/**
 *
 * @description 生成 图形验证码
 * @return {*}
 */
const getCaptcha = (ctx,next) => {
  //  若创建算数式验证码，将create改为createMathExpr
  const newCaptcha = svgCaptcha.create({
    size: 4, // 验证码长度
    ignoreChars: '0o1i',
    fontSize: 40, // 验证码文字尺寸
    noise: 3, // 干扰线条数量 0-5
    width: 120, // 生成svg的宽度
    height: 45, // 生成svg的高度
    color: true, // 验证码字符颜色
    background: '#fff' // 验证码图片背景颜色
  })
    // 创建一个token
    const captchaToken =  createToken()
    
    // 添加到svg整个对象中
    newCaptcha.captchaToken =captchaToken
    newCaptcha.text.toLocaleLowerCase
    // 保存svg验证码信息到redis
    redis.setHashVal( captchaToken,'captcha',JSON.stringify({text:newCaptcha.text}),60*5)//五分钟

  //	注意 svg-captcha 生成校验码svg后，有两个返回参数，一个data（svg代码），一个text（验证码文字）
  return {
    newCaptcha
  }
}

module.exports = {
  getCaptcha
}